package bdsimple.impl.mysql;

import bdsimple.abstractfactory.AbstractFactoryDAO;
import bdsimple.dao.base.CiudadDAO;
import bdsimple.dao.base.CiudadVampiroDAO;
import bdsimple.dao.base.VampiroDAO;
import bdsimple.dto.base.CiudadDTO;
import bdsimple.dto.base.CiudadVampiroDTO;
import bdsimple.dto.base.VampiroDTO;
import dao.base.impl.BaseDTO;
import dao.base.impl.Reference;

public class CiudadVampiroDTOImpl extends BaseDTO implements CiudadVampiroDTO {

	public CiudadVampiroDTOImpl() {
		super(CiudadVampiroDAO.class);
	}

	// ---------------------------------------------------------------------------

	private float probabilidadHordas;

	private final Reference<VampiroDTO> vampiroDTORef = //
	new Reference<VampiroDTO>();

	private final Reference<CiudadDTO> ciudadDTORef = //
	new Reference<CiudadDTO>();

	// ---------------------------------------------------------------------------

	public float getProbabilidadHordas() {
		return probabilidadHordas;
	}

	public void setProbabilidadHordas(float probabilidadHordas) {
		this.probabilidadHordas = probabilidadHordas;
	}

	// ---------------------------------------------------------------------------

	public VampiroDTO getVampiroDTO() {
		if (vampiroDTORef.getRefValue() == null) {
			if (vampiroDTORef.getRefIdent() != 0) {
				try {

					// Lazy load the departmentDTORef
					VampiroDAO vampiroDAO = (VampiroDAO) AbstractFactoryDAO
							.getFactoryDAO(). //
							getDAO(VampiroDAO.class, connectionBean);

					vampiroDTORef.setRefValue( //
							(VampiroDTO) vampiroDAO.loadById(vampiroDTORef
									.getRefIdent()));

				} catch (Exception e) {
					e.printStackTrace();
					throw new RuntimeException(e);
				}
			}
		}

		return vampiroDTORef.getRefValue();
	}

	public void setVampiroDTORef(VampiroDTO vampiroDTORef) {
		this.vampiroDTORef.setRefValue(vampiroDTORef);
	}

	public Reference<VampiroDTO> getVampiroDTORef() {
		return vampiroDTORef;
	}

	// ---------------------------------------------------------------------------

	public CiudadDTO getCiudadDTO() {
		if (ciudadDTORef.getRefValue() == null) {
			if (ciudadDTORef.getRefIdent() != 0) {
				try {

					// Lazy load the departmentDTORef
					CiudadDAO ciudadDAO = (CiudadDAO) AbstractFactoryDAO
							.getFactoryDAO(). //
							getDAO(CiudadDAO.class, connectionBean);

					ciudadDTORef.setRefValue( //
							(CiudadDTO) ciudadDAO.loadById(ciudadDTORef
									.getRefIdent()));

				} catch (Exception e) {
					e.printStackTrace();
					throw new RuntimeException(e);
				}
			}
		}

		return ciudadDTORef.getRefValue();
	}

	public void setCiudadDTORef(CiudadDTO ciudadDTORef) {
		this.ciudadDTORef.setRefValue(ciudadDTORef);
	}

	public Reference<CiudadDTO> getCiudadDTORef() {
		return ciudadDTORef;
	}

	// ---------------------------------------------------------------------------

}
